--[[--
- @Copyright (C), 2016-, sixiong.
- @Name error_handler.lua
- @Author sixiong
- @Version 1.0
- @Date: 2016年6月11日下午22:06:41
- @Description 错误处理
- @Class
- @Function List
- @History <author> <time> <version > <desc>
            sixiong 2016年6月11日下午22:06:41  1.0  第一次建立该文件
--]] 
error_handler = error_handler or {}

-- 
--[[
- @desc  非法网址（404）
- @param nil
- return void
--]] 
function error_handler.empty() 
--	dump(404);
	local render = require 'core.template';
	--log.verbose("PAGE NOT EXISTS : " .. ngx.request.uri);
  ngx.header['Content-Type'] = 'text/javascript;charset=UTF-8';
  ngx.status = ngx.HTTP_OK;

	local html = [[	 
		<div class="container">
			<h1 style="font-size:4em; font-weight:bold; text-align:center; margin-top:5%"> ERR 404 </h1><br>
			<div class="alert alert-danger" role="alert" style="text-align:center;"><h3><b>:( OOPS PAGE NOT EXISTS.</b></h3></div>					
		</div> 
	]];

	render.render(html, { title = "页面不存在" });
end
 
-- 
--[[
- @desc  内部错误（500）
- @param nil
- return void
--]] 
function error_handler.fatal(err) 
    ngx.log(ngx.ERR, "500错误 :", err); 

	local render = require 'core.template';
	local stack = debug.traceback();
	
--	 ngx.log(ngx.ERR, "500错误 :", stack);
	
	ngx.header['Content-Type'] = 'text/html;charset=UTF-8'
	if not _DEBUG then  
		local html = [[	 <div class="container">
				<h1 style="font-size:4em; font-weight:bold; text-align:center; margin-top:5%"> ERR 500 </h1><br>
				<div class="alert alert-danger" role="alert" style="text-align:center;"><h3><b>:( OOPS SORRY.</b></h3></div>					
			</div> 
		]]; 
	    render.render(html, { title = "出错了" });  
	else 
		local html = [[	 
			<div class="container">
				<h1 style="font-size:4em; font-weight:bold; text-align:center; margin-top:5%">GOT AN ERROR</h1><br>
				<div class="panel panel-default">
					<div class="panel-heading"><b>{{err}}</b></div>
					<div class="panel-body">{*stack*}</div>
				</div>

				<h3>Information : </h3>
				<table class="table table-bordered">
					{% for k, v in pairs(info) do %}
						<tr>
							<td width="100"><b>{{k}}</b></td>
							<td>{{v}}</td>
						</tr>
					{% end %}
				</ul>
			</div> 
		]];

		render.render(html, {
			title = "出错了",
			err = err,
			stack = string.gsub(stack, "\n", "<br>"),
			info = ngx.request,
		});
	end
end
